﻿#define _CRT_SECURE_NO_WARNINGS 1
#include "Contact.h"
#include "Slist.h"

//初始化通讯录

//void InitContact(contact** con) {
//	contact** con = (contact**)malloc(sizeof(con));
//	
//}
//添加通讯录数据
void AddContact(contact** con)
{
	PeoInfo information;
	printf("添加开始,请输入要添加的\n");
	scanf("%s%s%d%s%s"
			,&information.name
			,&information.sex
			,&information.age
			,&information.tel
			,&information.addr);
	SLTPushBack(con, information);
}
//在删除通讯录数据或者查找通讯录数据的时候都需要根据特定的条件来查找
// 这里我们图个方便，因此用姓名来查找，正好跟我们顺序表来实现通讯录一样
contact* FindByName(contact* con, char name[]) {
	contact* persent = con;
	while (persent)
	{
		if (strcmp(persent->data.name, name) == 0) {
			return persent;
		}
		persent = persent->next;
	}
	return NULL;
}
//删除通讯录数据
void DelContact(contact** con)
{
	char name[NAME_MAX];
	printf("输入删除的名字\n");
	scanf("%s", name);

	contact* pos = FindByName(*con, name);//该函数是一级指针，所以这里要解引用一下
	if (pos == NULL)
	{
		printf("不存在\n");
		return;
	}
	SLTErase(con, pos);
}
//展示通讯录数据
//void ShowContact(contact* con)
//{
//	printf("\n");
//	contact* persent = con;
//	while (persent)
//	{
//		printf("%s	%s	%d	%s	%s",
//			persent->data.name
//			, persent->data.sex
//			, persent->data.age
//			, persent->data.tel
//			, persent->data.addr);
//		persent = persent->next;
//	}
//}
void ShowContact(contact* con) {
	printf("%-10s %-4s %-4s %15s %-20s\n", "姓名", "性别", "年龄", "联系电话", "住址");
		contact * cur = con;
	while (cur)
	{
		printf("%-10s %-4s %-4d %15s %-20s\n",
			cur->data.name,
			cur->data.sex,
			cur->data.age,
			cur->data.tel,
			cur->data.addr);
		cur = cur->next;
	}
}
//查找通讯录数据
void FindContact(contact* con){
	char name[NAME_MAX];
	printf("输入删除的名字\n");
	scanf("%s", name);
	contact* persent = FindByName(con, name);//该函数是一级指针，该函数也是一级指针，
	//所以不用解引用
	if (persent == NULL)
	{
		printf("不存在\n");
		return;
	}
	printf("找到了\n");
	printf("%s	%s	%d	%s	%s",
		persent->data.name
		, persent->data.sex
		, persent->data.age
		, persent->data.tel
		, persent->data.addr);
	 }
//修改通讯录数据
//void ModifyContact(contact** con)
//{
//	char name[NAME_MAX];
//	printf("输入删除的名字\n");
//	scanf("%s", name);
//	contact* persent = FindByName(*con, name);//同上面一样
//	if (persent == NULL)
//	{
//		printf("不存在\n");
//		return;
//	}
//	printf("修改开始,请输入改后的\n");
//	scanf("%s%s%d%s%s"\
//		, persent->data.name
//		, persent->data.sex
//		, persent->data.age
//		, persent->data.tel
//		, persent->data.addr);
//	printf("修改成功\n");
//}
void ModifyContact(contact** con) {
	char name[NAME_MAX];
	printf("请输入要修改的用户名称:\n");
	scanf("%s", &name);
	contact* pos = FindByName(*con, name);
	if (pos == NULL) {
		printf("该用户不存在抱歉\n");
		return;
	}
	printf("更改后的姓名请输入：\n");
	scanf("%s", pos->data.name);
	printf("更改后的性别请输入：\n");
	scanf("%s", pos->data.sex);
	printf("更改后的年龄请输入：\n");
	scanf("%d", &pos->data.age);
	printf("更改后的电话请输入：\n");
	scanf("%s", pos->data.tel);
	printf("更改后的地址请输入：\n");
	scanf("%s", pos->data.addr);
	printf("修改成功！\n");
}
//void SaveContact(contact* con) {
//	FILE* pf = fopen("contact.txt", "wb");
//	if (pf == NULL) {
//		perror("fopen error!\n");
//		return;
//	}
//	//将通讯录数据写⼊⽂件
//	contact* cur = con;
//	while (cur)
//	{
//		fwrite(&(cur->data), sizeof(cur->data), 1, pf);
//		cur = cur->next;
//	}
//	printf("通讯录数据保存成功！\n");
//}
void DestroyContact(contact** con) {
	
	SListDesTroy(con);
}